const verifyIDCard = (value) => {
  const idNumberRegex = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/; // 15位或18位数字，最后一位可以是数字或者大写字母 X

  if (!idNumberRegex.test(value)) {
    return false; // 不符合基本的长度和格式要求
  }

  // 检查18位身份证号码的校验位
  if (value.length === 18) {
    const factor = [
      7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2
    ];
    const parity = [
      '1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'
    ];
    let total = 0;
    for (let i = 0; i < 17; i++) {
      total += parseInt(value.charAt(i)) * factor[i];
    }
    const modulus = total % 11;
    if (parity[modulus] !== value.charAt(17).toUpperCase()) {
      return false;
    }
  }

  return true;
}
export default verifyIDCard